home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / csim / source.lha / source / C++SIM / Examples / Breaks.cc < prev    next >
C/C++ Source or Header  |  1993-06-14  |  853b  |  59 lines

  1. /*
  2.  * Copyright (C) 1993
  3.  *
  4.  * Department of Computing Science,
  5.  * The University,
  6.  * Newcastle upon Tyne,
  7.  * UK.
  8.  */
  9.  
  10. #ifndef BREAKS_H_
  11. #include "Breaks.h"
  12. #endif
  13.  
  14. #ifndef MACHINE_H_
  15. #include "Machine.h"
  16. #endif
  17.  
  18. #ifndef QUEUE_H_
  19. #include "Queue.h"
  20. #endif
  21.  
  22. extern Machine* M;
  23. extern Queue JobQ;
  24.  
  25. Breaks::Breaks ()
  26. {
  27.     RepairTime = new UniformStream(1, 10);
  28.     OperativeTime = new UniformStream(20, 1000);
  29.     interrupted_service = false;
  30. }
  31.  
  32. Breaks::~Breaks ()
  33. {
  34.     delete RepairTime;
  35.     delete OperativeTime;
  36. }
  37.  
  38. void Breaks::Body ()
  39. {
  40.     for(;;)
  41.     {
  42.     Hold((*OperativeTime)());
  43.     M->Broken();
  44.     M->Cancel();
  45.  
  46.     if(!JobQ.IsEmpty())
  47.         interrupted_service = true;
  48.  
  49.     Hold((*RepairTime)());
  50.     M->Fixed();
  51.     if (interrupted_service)
  52.         M->ActivateAt(M->ServiceTime() + CurrentTime());
  53.     else
  54.         M->ActivateAt();
  55.  
  56.     interrupted_service = false;
  57.     }
  58. }
  59.